Preserving the Quality of Architectural Tactics in Source Code
نویسنده
چکیده
Preserving the Quality of Architectural Tactics in Source Code by Mehdi Mirakhorli In any complex software system, strong interdependencies exist between requirements and software architecture. Requirements drive architectural choices while also being constrained by the existing architecture and by what is economically feasible. This makes it advisable to concurrently specify the requirements, to devise and compare alternative architectural design solutions, and ultimately to make a series of design decisions in order to satisfy each of the quality concerns. Unfortunately, anecdotal evidence has shown that architectural knowledge tends to be tacit in nature, stored in the heads of people, and lost over time. Therefore, developers often lack comprehensive knowledge of underlying architectural design decisions and inadvertently degrade the quality of the architecture while performing maintenance activities. In practice, this problem can be addressed through preserving the relationships between the requirements, architectural design decisions and their implementations in the source code, and then using this information to keep developers aware of critical architectural aspects of the code. This dissertation presents a novel approach that utilizes machine learning techniques to recover and preserve the relationships between architecturally significant requirements, architectural decisions and their realizations in the implemented code. Our approach for recovering architectural decisions includes the two primary stages of training and classification. In the first stage, the classifier is trained using code snippets of different architectural decisions collected from various software systems. During this phase, the classifier learns the terms that developers typically use to implement each architectural decision. These “indicator terms” represent method names, variable names, comments, or the development APIs that developers inevitably use to implement various architectural decisions. A probabilistic weight is then computed for each potential indicator term with respect to each type of architectural decision. The weight estimates how strongly an indicator term represents a specific architectural tactics/decisions. For example, a term such as pulse is highly representative of the heartbeat tactic but occurs infrequently in the authentication. After learning the indicator terms, the classifier can compute the likelihood that any given source file implements a specific architectural decision. The classifier was evaluated through several different experiments including classical cross-validation over code snippets of 50 open source projects and on the entire source code of a large scale software system. Results showed that classifier can reliably recognize a wide range of architectural decisions. The technique introduced in this dissertation is used to develop the Archie tool suite. Archie is a plug-in for Eclipse and is designed to detect wide range of architectural design decisions in the code and to protect them from potential degradation during maintenance activities. It has several features for performing change impact analysis of architectural concerns at both the code and design level and proactively keep developers informed of underlying architectural decisions during maintenance activities. Archie is at the stage of technology transfer at the US Department of Homeland Security where it is purely used to detect and monitor security choices. Furthermore, this outcome is integrated into the Department of Homeland Security’s Software Assurance Market Place (SWAMP) to advance research and development of secure software systems. “This Thesis is dedicated to the memory of my parents”
منابع مشابه
A search engine for finding and reusing architecturally significant code
A Search Engine for Finding and Reusing Architecturally Significant Code Ibrahim Jameel Mujhid Supervising Professor: Dr. Mehdi Mirakhorli Architectural tactics are the building blocks of software architecture. They describe solutions for addressing specific quality concerns, and are prevalent across many software systems. Once a decision is made to utilize a tactic, the developer must generate...
متن کاملInferring Architectural Evolution from Source Code Analysis - A Tool-Supported Approach for the Detection of Architectural Tactics
Information about the evolution of a software is useful data for software developers and maintainers as well as project managers. Versioning systems have been used in many proposals to provide such data but very few approaches analyze and interpret this information at the architectural level. In this paper, we propose an approach that supports the understanding of software evolution at the arch...
متن کاملDefining Robust Recovery Solutions for Preserving Service Quality during Rail/Metro Systems Failure
In this paper, we propose a sensitivity analysis for evaluating the effectiveness of recovery solutions in the case of disturbed rail operations. Indeed, when failures or breakdowns occur during daily service, new strategies have to be implemented so as to react appropriately and re-establish ordinary conditions as rapidly as possible. In this context, the use of rail simulation is vital: for e...
متن کاملQuality-driven architecture development using architectural tactics
This paper presents a quality-driven approach to embodying non-functional requirements (NFRs) into software architecture using architectural tactics. Architectural tactics are reusable architectural building blocks, providing general architectural solutions for common issues pertaining to quality attributes. In this approach, architectural tactics are represented as feature models, and their se...
متن کاملA Quantitative Evaluation of the Impact of Architectural Patterns on Quality Requirements
When designing software architectures, an architect relies on a set of pre-defined styles commonly named architectural patterns. While architectural patterns embody high level design decisions, an architectural tactic is a design strategy that addresses a particular quality attribute. Tactics; in fact, serve as the meeting point between the quality attributes and the software architecture. To g...
متن کامل